A work process may include two or more steps performed by computer based applications. In a synchronous work process, some controlling application component invokes, in turn, each relevant application or component that is responsible for performing each step in the work process. If any component or application fails to complete any given step, the controller is immediately aware that the error occurred, and the point in which the process failed is known.
In an asynchronous work process, the components or applications that perform the steps in the process are decoupled from each other. In contrast to the synchronous work process, during the asynchronous work process, each application or component that performs a step in the work process has work items delivered to it through some queuing mechanism. The application performs work from its incoming queue but may not anticipate how or when items are placed in the queue. As a result, any given application performing steps in the asynchronous work process will not be alerted to a failure of a previous step to be performed.
During asynchronous work processing, it is possible for items of work to become lost or “stuck” between steps in the system with no obvious notification to a user that errors have occurred. Essentially, each step in the asynchronous work process waits for some completed portion of the work process. Each step may not know where a previous step's work is being delivered from. In the asynchronous work process, there may be difficulties in determining where in the work process a problem was encountered.
During asynchronous work processing, there is the possibility of error or failure at each step of the process. For example, one application may fail to perform its function. There is also the possibility of an external failure. For example, a problem with a network, a storage device, or a processor may impact the ability of the application to perform successfully. In either case, it may be useful to detect the error in order to correct the error and resume the asynchronous work process.